package 力扣日常刷题.木22一月.第08天0116;

import java.util.*;

/**
 * @author 帅小伙
 * @date 2022/1/16
 * @description
 */
public class Demo10记忆化搜索中等讲整数按权重排序 {

    HashMap<Integer,Integer> f = new HashMap<Integer,Integer>();
    public int getKth(int lo, int hi, int k) {
        List<Integer> list  = new ArrayList<Integer>();
        f.put(1,0);
        for (int i = lo; i <= hi ; i++) {
            list.add(i);
        }
        Collections.sort(list, (a, b)->{
            if(getF(a)!=getF(b)){
                return getF(a) - getF(b);
            }else{
                return a-b;
            }
        });
        return list.get(k-1);
    }

    int getF(int x){
        if(!f.containsKey(x)){
            if(x%2==0)f.put(x,getF(x/2)+1);
            else f.put(x,getF(3*x+1)+1);
        }
        return f.get(x);
    }

}
